package com.autonavi.abs.common.base;

import java.util.List;

/**
 * @author wwy
 * @version V1.0
 * <p>Description: mapper基类</p>
 * @date 2020-07-20 17:01
 */
public interface BaseDAO<T extends BaseDTO, Q extends BaseQuery> {

    /**
     * 新建
     *
     * @param dto
     * @return
     */
    int insert(T dto);

    /**
     * 根据id删除
     *
     * @param id
     * @return
     */
    int deleteById(Long id);

    /**
     * 根据id更新
     *
     * @return
     */
    int updateById(T dto);

    /**
     * 根据id查询
     *
     * @param id
     * @return
     */
    T selectById(Long id);

    /**
     * 不分页查询，谨慎使用
     *
     * @param query
     * @return
     */
    List<T> selectByQuery(Q query);

    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    List<T> selectPageByQuery(Q query);

    /**
     * 统计条数
     *
     * @param query
     * @return
     */
    int selectCountByQuery(Q query);

}
